package com.tinymall.mapper;

import com.tinymall.common.pojo.entity.ShopCoupon;
import com.tinymall.common.pojo.entity.UserCoupon;
import com.tinymall.common.pojo.vo.CouponVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author ：X.B
 * @date ：Created in  2022/6/27 20:18
 * @description : 用户持久层接口
 * @modified By：X.B
 * @version: 1
 */
@Repository
public interface UserCouponMapper {
    //用户页面展示所有优惠券
    List<CouponVO> getCouponByUser();

    //用户查询自己拥有的优惠券
    List<CouponVO> userSelectCoupon(Long userId);


    //用户根据优惠券标题查询优惠券(模糊查询)
    List<ShopCoupon> userGetCoupon(String title);

    //用户根据商家名字查询商家优惠券
    List<ShopCoupon> getAllCouponByShopIds(String shopName);

//用户根据优惠券id查询优惠券信息
    CouponVO getCouponByCouponId(Long couponId);

    //用户领取优惠券,用户优惠券个数加领取个数
    //商家优惠券个数减领取个数
    void insertCouponCount(UserCoupon userCoupon);
    //用户领取优惠券后,商家优惠券减领取个数
    void updateCouponCount( @Param("couponRemainCount") Long couponRemainCount,
                            @Param("userId") Long userId,
                            @Param("couponId") Long couponId
    );

    //根据优惠券id查询用户的优惠券信息
    UserCoupon getCouponInfoCouponId(Long couponId);

    //数据库存在优惠券,领取优惠券后直接修改优惠券数量即可
    void updateCouponRemainCountByUserId(@Param("couponCount") Long couponCount,
                                        @Param("couponId") Long couponId
                                         );

 /*   //用户获得某商家优惠券个数(用于优惠券个数统计)
    int getCouponCountByShopId(Long shopId);
*/
   // 用户获得所有商家优惠券个数(用于优惠券个数统计)
    int getAllByCouponRemainCount();

}